Client/server applications have become very popular in the last years, especially thanks to the widespread diffusion of the Internet. In a client/server application, multiple clients can access shared resources managed by a central server. A typical example is a web application, which consists of a solution that is deployed over the World Wide Web (or simply the web); the web is formed by a system of servers in the Internet supporting specially formatted documents (called web pages).
The main reason of the success of the web applications is the ubiquity of the browsers that are required to surf through the Internet.
Nevertheless, the web applications are not completely satisfactory in some specific situations. For example, a problem arises when the web applications have to operate according to local information that is available on the clients.
In this case, the web page that is used to submit the desired request invokes a command that performs the uploading of the local information onto the server. Once the uploading has been completed, the request is actually submitted to the server for its processing. Typically, this involves the dynamic generation of a new web page, which content is based on the local information that is now available on the server.
A drawback of the solution described above is that it does not allow a correct control of the uploading. Indeed, the user of the client may reiterate the submission of the same request to the server while the uploading is still in progress; a typical example is when the user moves backward and forward with the browser through the web pages of the application. As a result, the uploading of the local information onto the server is repeated for each submission of the request.
This may result in a malfunctioning of the web application; in any case, it causes a network overload for the transmission of the same information to the server.
The above-mentioned drawbacks are particular acute when the local information to be uploaded onto the server consists of a large amount of data.
A specific example is provided by a software distribution application, which is used to enforce desired software configurations on the clients; a commercial software distribution application is the “IBM Tivoli Configuration Manager or ITCM” by IBM Corporation. In this scenario, the user of the client can access the server and submit a synchronization request for applying a selected target software configuration. However, for this purpose the server needs information about a current software configuration of the client (in order to determine the operations to be executed on the client to reach the target software configuration). Therefore, the client has to transmit its current software configuration to the server before submitting the actual synchronization request.